#ifndef __GE_LIGHT_H__
#define __GE_LIGHT_H__
namespace Syp
{
///A light behaves just like any other light. It is a standard way to use lights in the engine. The user need not use different types of lights for per-pixel/vertex lighting.
class Light : public Node
{
public:
	Light():exponent(0.0f),cutoff(180.0f),constantAttentuation(1.0f),linearAttentuation(0.0f),quadAttentuation(0.0f) 
	{
		ambient[0] = ambient[1] = ambient[2] = 0.0f;
		ambient[3] = 1.0f;
		diffuse[0] = diffuse[1] = diffuse[2] = 1.0f;
		diffuse[3] = 1.0f;
		specular[0] = specular[1] = specular[2] = 1.0f;
		specular[3] = 1.0f;

	};
	~Light(){};	

	float ambient[4];
	float diffuse[4];
	float specular[4];
	float exponent;
	float cutoff;
	float constantAttentuation;
	float linearAttentuation;
	float quadAttentuation;
    
};

///A A Strict Weak Ordering which sorts light pointers.
/*
struct less_LTC : public std::binary_function< LTCtype, LTCtype, bool > {
  bool operator()(const LTCtype& x, const LTCtype& y) {
    return((x.d_index) < (y.d_index)); // just an example
  }

*/
//struct LightSort //: public std::binary_function<Light*,Light*,bool>
//{
//	bool operator() (const Light* a, const Light* b)
//	{
//		float suma = a->pos.x
//	}
//};
}
#endif //__GE_LIGHT_H__
